package com.ruoyi.course.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 资源可用时间对象 resource_availability
 * 
 * @author chenxl
 * @date 2025-06-29
 */
public class ResourceAvailability extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** ID */
    private String id;

    /*course_schedule_details_id课程班id*/
    @Excel(name = "课程班id")
    private String courseScheduleDetailsId;

    /** 资源类型(1=教师,2=教室,3=其他) */
    @Excel(name = "资源类型(1=教师,2=教室,3=其他)")
    private Long resourceType;

    /** 资源ID */
    @Excel(name = "资源ID")
    private String resourceId;

    /** 开始时间 */
    @Excel(name = "开始时间")
    private String startTime;

    /** 结束时间 */
    @Excel(name = "结束时间")
    private String endTime;

    /** 日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date date;

    /** 周几(1-7，1=周一) */
    @Excel(name = "周几(1-7，1=周一)")
    private int dayOfWeek;

    /** 学期ID（整数类型，对应字典值） */
    @Excel(name = "学期ID", readConverterExp = "整=数类型，对应字典值")
    private Long semesterId;

    /** 重复规则(如:每周一) */
    @Excel(name = "重复规则(如:每周一)")
    private String repeatRule;

    /** 是否可用(1=可用,0=不可用) */
    @Excel(name = "是否可用(1=可用,0=不可用)")
    private Integer isAvailable;

    /** 不可用原因 */
    @Excel(name = "不可用原因")
    private String reason;

    /** 创建者ID */
    @Excel(name = "创建者ID")
    private String creatorId;

    /** 更新者ID */
    @Excel(name = "更新者ID")
    private String updaterId;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Date createdAt;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Date updatedAt;

    /**academic_year学年*/
    @Excel(name = "学年")
    private String academicYear;

    public void setId(String id) 
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }

    public void setResourceType(Long resourceType) 
    {
        this.resourceType = resourceType;
    }

    public Long getResourceType() 
    {
        return resourceType;
    }

    public void setResourceId(String resourceId) 
    {
        this.resourceId = resourceId;
    }

    public String getResourceId() 
    {
        return resourceId;
    }

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getEndTime() {
        return endTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public void setDate(Date date) 
    {
        this.date = date;
    }

    public Date getDate() 
    {
        return date;
    }

    public void setDayOfWeek(int dayOfWeek)
    {
        this.dayOfWeek = dayOfWeek;
    }

    public int getDayOfWeek()
    {
        return dayOfWeek;
    }

    public void setSemesterId(Long semesterId) 
    {
        this.semesterId = semesterId;
    }

    public Long getSemesterId()
    {
        return semesterId;
    }

    public void setRepeatRule(String repeatRule) 
    {
        this.repeatRule = repeatRule;
    }

    public String getRepeatRule() 
    {
        return repeatRule;
    }

    public void setIsAvailable(Integer isAvailable) 
    {
        this.isAvailable = isAvailable;
    }

    public Integer getIsAvailable() 
    {
        return isAvailable;
    }

    public void setReason(String reason) 
    {
        this.reason = reason;
    }

    public String getReason() 
    {
        return reason;
    }

    public void setCreatorId(String creatorId) 
    {
        this.creatorId = creatorId;
    }

    public String getCreatorId() 
    {
        return creatorId;
    }

    public void setUpdaterId(String updaterId) 
    {
        this.updaterId = updaterId;
    }

    public String getUpdaterId() 
    {
        return updaterId;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }
    public String getAcademicYear() {
        return academicYear;
    }

    public void setAcademicYear(String academicYear) {
        this.academicYear = academicYear;
    }

    public String getCourseScheduleDetailsId() {
        return courseScheduleDetailsId;
    }

    public void setCourseScheduleDetailsId(String courseScheduleDetailsId) {
        this.courseScheduleDetailsId = courseScheduleDetailsId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("resourceType", getResourceType())
            .append("resourceId", getResourceId())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("date", getDate())
            .append("dayOfWeek", getDayOfWeek())
            .append("semesterId", getSemesterId())
            .append("repeatRule", getRepeatRule())
            .append("isAvailable", getIsAvailable())
            .append("reason", getReason())
            .append("creatorId", getCreatorId())
            .append("updaterId", getUpdaterId())
            .append("remark", getRemark())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .append("academicYear", getAcademicYear())
            .append("courseScheduleDetailsId", getCourseScheduleDetailsId())
            .toString();
    }

}
